package it.iubar.tkdscore;

import java.util.Timer;
import java.util.TimerTask;

/**
 *
 * @author borgo
 */
public class ControllersManager {

    //Delay, in milliseconds before we interrupt MessageLoop
    //thread (default one hour).
    private static long patience = 1000 * 60 * 60;
    private static final boolean AUTO_END = false;

    static void threadMessage(String message) {
        String threadName = Thread.currentThread().getName();
        System.out.format("%s: %s%n", threadName, message);
    }

    public static void begin() throws InterruptedException {
        long startTime = System.currentTimeMillis();
        Thread t = new Thread(new ControllersThread());
        t.start();

        threadMessage("Waiting for MessageLoop thread to finish");
        //loop until MessageLoop thread exits
        while (t.isAlive()) {
            threadMessage("Still waiting...");
            //Wait maximum of 1 second for MessageLoop thread
            // to finish.
            t.join(1000);
            if (AUTO_END) {
                if (((System.currentTimeMillis() - startTime) > patience) && t.isAlive()) {
                    threadMessage("Tired of waiting!");
                    t.interrupt();
                    //Shouldn't be long now -- wait indefinitely
                    t.join();
                }
            }
        }
        threadMessage("Finally!");
    }

    public static void begin2() {
        Timer timer = new Timer();
        TimerTask task = new ControllersTimerTask();
        // repeated every one second
        timer.schedule(task, 500, 1000);
    }
}
